Filtering of data or other information is a technique for taking some action based on content of the data or information. For example, data filtering can be used to select some data from a data set and acting upon only those records that meet specified criteria. Filtering permits acting upon data without affecting the data. The criterion is typically a “filter property” that can be set at initialization, by programming, or via user interaction.
Data filtering can be used in innumerable applications such as selection of items in a database, collection of information on a desired topic from a network or rejection of unwanted information from the network, and the like. In some applications, filtering can be performed on command information to determine and select from among multiple responses to the command.
A filtering operation typically is an action that involves two component steps; data matching and switching based on the matching result. One or more input fields in a command or data string are matched against a predetermined set of values, and the command or data can be switched to one of multiple targets based on the comparison result.
Information filtering implementations are generally static with matching operations examining received data, comparing the data to a set of static values. For example, a filter may direct all commands of a certain type to a particular target. In another example, a filter may direct all commands from a particular source to a different target. In some applications, the filter can be disabled and enabled during operations, while data is received in real-time, but when enabled have static behavior.
Data filtering can be based on more than one criterion. Typically, multiple-criteria filtering can be implemented as multiple-cascaded discrete filters or as a combinational logic with multiple comparison elements or gates. An example of command filtering based on multiple criteria is filtering based on source identifier (ID) and command type.
A command filter that aggregates multiple criteria can have performance difficulties if a criterion involves the state of a physical device. Physical devices frequently change state, and device interrogation to determine state can be a slow process. Performance problems can result if filtering is delayed while device state is updated for usage in a matching operation.
In a filtering operation that uses cascaded filter steps, component filtering operations are performed sequentially rather than in parallel. Performance can be impacted if a filtering operation depends on device state and the device state changes between filtering steps. The sequential filtering steps add complexity and reduce maintainability of system logic. Cascading does not solve performance difficulties that result from inconsistencies in device state.